// using System;
// using System.Diagnostics;
// using System.Net;
// using System.Net.Sockets;
// using System.Text;

// namespace Lesson9
// {
//     class Program
//     {
//         static void Main(string[] args)
//         {
//             #region 知识点一 服务端应该做什么
//             //服务端代码
//             //1.创建套接字对象Socket
//             //2.用Bind方法绑定IP地址和端口
//             //3.用Listen方法监听
//             //4.用Accept方法接受客户端的连接
//             //5.建立连接 Accept返回新套接字
//             //6.用Send和Receive方法收发数据
//             //7.用Shutdown和Close方法关闭套接字
//             #endregion

//             #region 知识点二 实现服务端基本逻辑
//             //1.创建套接字对象Socket
//             Socket s1 = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//             //2.用Bind方法绑定IP地址和端口
//             try
//             {
//                 IPEndPoint iPEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 25565);
//                 s1.Bind(iPEndPoint);
//             }
//             catch (Exception e)
//             {
//                 Console.WriteLine("绑定错误" + e.Message);
//                 return;
//             }
//             //3.用Listen方法监听
//             s1.Listen(10);
//             //4.用Accept方法接受连接
//             //5.建立连接 Accept返回新套接字
//             Console.WriteLine("服务端绑定结束 等待连接");
//             Socket socketClient = s1.Accept();
//             Console.WriteLine("已连接");

//             //6.用Send和Receive方法进行数据传输
//             //发送
//             socketClient.Send(Encoding.UTF8.GetBytes("欢迎连入服务器"));
//             //接受
//             byte[] result = new byte[1024];
//             int receiveNum = socketClient.Receive(result);
//             Console.WriteLine(string.Format("收到了{0}发来的消息{1}",
//            socketClient.RemoteEndPoint.ToString(),
//            Encoding.UTF8.GetString(result, 0, receiveNum)));
//             //7.用Shutdown方法释放连接
//             socketClient.Shutdown(SocketShutdown.Both);
//             //8.用Close方法关闭套接字
//             socketClient.Close();
//             #endregion
            
//             Console.WriteLine("按任意键退出...");
//             Console.ReadKey();
//         }
//     } 
// }